More and more, society is evolving into a world of information. In this regard, society has become relatively good at handling this constant flow of information, being able to separate the meaningful content from the meaningless content. For example, people glance through advertisements everyday without a second thought, all while processing items such as news headlines or traffic signs. People often readily see and react to important information such as traffic lights, warning sirens, and pedestrian crossings.
In much the same way as people operate in a world of information, computers are also living in a world were information is abundant. Conventionally, a person's attention is what determines which information is meaningful and of interest. In recent times, however, the computers have become much more autonomous in processing information. For example, firewall software makes automatic decisions on which packets of information are interesting and which should be discarded. It has obviously been instructed to do so by a user, but by and large its operation is self-contained once various initial parameters have been set.
The situation for computers is changing, though. Machine-to-machine communications are increasing rapidly, with some of this traffic being directed towards the user. For example, mobile direct advertising has been envisioned many times, but it has never been successful, simply because it would be a terrible burden to the user, and possibly an invasion of privacy as well (as people often consider their mobile telephone a very personal item).
How do people process this abundant information? It is generally accepted that people process information by attaching meaning to information through context. For example, the placement of chess pieces on a chess board has no meaning until the placement is considered in the context of a chess game, where great significance is placed on the relative positions of the chess pieces. Also, for example, in traffic, driving a car means that drivers pay attention to different traffic signs than if the same drivers were walking. In general, then, context matters to the processing of information.
Whereas people process information by attaching context to the information, computing devices such as cellular telephones do not understand the concept of context. In this regard, cellular telephones will happily bleep away whether the user is in a meeting, or in a hospital. To provide context to information for the use of computing devices, users have to explicitly instruct such devices how to behave, such as by setting user profiles. But since computing devices such as cellular telephones are always with their respective users (well, nearly always anyway), such computing devices already “know” a lot about their respective users. For example, such computing devices already know if their respective users are moving, know where their respective users are located, know whether it is day or night, etc. Also, for example, such computing devices may also know portions, or all, of their respective user's calendar, or the contents of their respective user's email and/or SMS messages. Computing devices are dumb machines, however, and as such, typically have no way of knowing what their respective users want, unless somebody or something teaches them.
Techniques have been developed to provide context awareness to computing devices. Most of these techniques have concentrated on the desktop computer world, or the office world of meetings (context-sensitive whiteboards, for example). Some of them are concentrated on the problems of a tourist, providing location-sensitive information. Most importantly, however, nearly all of these prior techniques have concentrated on singular solutions to singular problems.